16.09.2009
Для решения задачи публикации информации о реализуемом товаре, размещения заказов на сайте, приема и обработки заказов и каталогов товаров непосредственно из интерфейсов системы "1С:Предприятие 8" фирмами "1С" и "1С-Битрикс" разработан открытый протокол взаимодействия WEB-сайта и прикладной торговой системы.
Функционально обмен делится на два бизнес-процесса:
1. Выгрузка на сайт коммерческих предложений (каталогов продукции).
2. Прием информации о заказах.
Первый бизнес-процесс обеспечивает публикацию на сайте каталога номенклатурных позиций. Второй необходим для передачи с сайта в информационную систему данных о заказах с сайта и дальнейшую синхронизацию статусов и параметров заказов.
В обоих случаях инициатором обмена выступает система "1С:Предприятие 8". Обмен электронными документами осуществляется в соответствии с форматами, описанными XML-схемой стандарта CommerceML, редакция 2.04 (Загрузить).
Каталоги для публикации на сайте выгружаются одним пакетом.
Выгрузка каталога начинается с того, что система "1С:Предприятие 8" отправляет http-запрос следующего вида:
http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=checkauth.
В ответ система управления сайтом передает системе "1С:Предприятие 8" три строки (используется разделитель строк "\n"):
Все последующие запросы к системе управления сайтом со стороны "1С:Предприятия 8" содержат в заголовке запроса имя и значение Cookie.
Далее следует запрос следующего вида:
http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=init
В ответ система управления сайтом передает две строки:
1. zip=yes, если сервер поддерживает обмен в zip-формате - в этом случае на следующем шаге файлы должны быть упакованы в zip-формате, или zip=no - в этом случае на следующем шаге файлы не упаковываются и передаются каждый по отдельности.
2. file_limit=<число>, где <число> - максимально допустимый размер файла в байтах для передачи за один запрос. Если системе "1С:Предприятие 8" понадобится передать файл большего размера, его следует разделить на фрагменты.
"1С:Предприятие 8" формирует запросы вида:
http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=file&filename=<имя файла>
для выгрузки на сайт файлов в формате CommerceML. Обмен происходит в виде POST.
В случае успешной записи файла система управления сайтом выдает строку "success".
Из "1С:Предприятия 8" производится пошаговая загрузка каталога по запросу с параметрами вида:
http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=import&filename=<имя файла>
Во время загрузки система управления сайтом направляет ответ в одном из следующих вариантов.
1. Если в первой строке содержится слово "progress", это означает необходимость послать тот же запрос еще раз. В этом случае во второй строке будет возвращен текущий статус обработки, объем загруженных данных, статус импорта и т. д.
2. Если в ответ передается строка со словом "success", то это будет означать сообщение об успешном окончании обработки файла.
3. Если в ходе запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово "failure", а в следующих строках - описание ошибки, произошедшей в процессе обработки запроса.
4. Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.
Заказы, оформленные на сайте, загружаются в систему "1С:Предприятие 8".
При этом соблюдаются следующие 8 правил:
1. При передаче в систему "1С:Предприятие 8" в заказе устанавливается категория "Заказ с сайта".
2. При формировании заказа в системе "1С:Предприятие 8" записываются номер и дата заказа, с которыми он оформлен на сайте.
3. Поиск контрагента осуществляется по ИНН (индивидуальный номер налогоплательщика) или наименованию (в зависимости от настроек).
4. При загрузке заказа производится поиск договора с контрагентом. Договор ищется среди существующих договоров с клиентом, с признаком ведения взаиморасчетов по заказам (по указанной в настройках загрузки Организации). Если не находится ни один договор, то создается новый.
5. При загрузке заказа загружаются все его свойства, переданные с сайта. Свойства ищутся в системе "1С:Предприятие 8" по наименованию. Если с таким наименованием свойства нет, то заводится новое свойство со значениями типа строка или число.
6. Заказ может модифицироваться в системе "1С:Предприятие 8", при этом его изменения будут выгружаться на сайт.
7. Если заказ оплачивается или отгружается в системе "1С:Предприятие 8", то "состояния" заказа по оплате и по отгрузке выгружаются на сайт только при полном выполнении операции (полной оплате и полной отгрузке). До этого момента заказ считается неоплаченным и неотгруженным.
8. После каждой выгрузки заказа на сайт на стороне сайта определяются значения его категорий (ссылка на категории). Эти значения устанавливаются в системе "1С:Предприятие 8" так, как они присвоены заказу на сайте.
Выгрузка каталога начинается с того, что система "1С:Предприятие 8" отправляет http-запрос следующего вида:
http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=checkauth.
В ответ система управления сайтом передает системе "1С:Предприятие 8" три строки (используется разделитель строк "\n"):
Все последующие запросы к системе управления сайтом со стороны "1С:Предприятия 8" содержат в заголовке запроса имя и значение Cookie.
Далее следует запрос следующего вида:
http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=init
В ответ система управления сайтом передает две строки:
1. zip=yes, если сервер поддерживает обмен в zip-формате - в этом случае на следующем шаге файлы должны быть упакованы в zip-формате, или zip=no - в этом случае на следующем шаге файлы не упаковываются и передаются каждый по отдельности.
2. file_limit=<число>, где <число> - максимально допустимый размер файла в байтах для передачи за один запрос. Если системе "1С:Предприятие 8" понадобится передать файл большего размера, его следует разделить на фрагменты.
На сайт отправляется запрос вида:
http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=query.
Сайт передает сведения о заказах в формате CommerceML. В случае успешного получения и записи заказов "1С:Предприятие 8" передает на сайт запрос вида:
http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=success
Система "1С:Предприятие 8" отправляет на сайт запрос вида:
http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=file&filename=<имя файла>
который загружает на сервер файл обмена, посылая содержимое файла в виде POST.
В случае успешной записи файла система управления сайтом передает строку со словом "success". Дополнительно на следующих строчках могут содержаться замечания по загрузке.
Если в ходе какого-либо запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово "failure", а в следующих строках - описание ошибки, произошедшей в процессе обработки запроса. Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.